home *** CD-ROM | disk | FTP | other *** search
/ Mission 3 / Mission 3.zip / Mission 3.iso / zugabe / gcc281 / gcc_vmt / gcc_vmt.doc < prev    next >
Text File  |  1996-11-20  |  3KB  |  99 lines

  1.  
  2.  
  3.  
  4.      ____      ____     ____         _   _    _    __    __    ________
  5.     //¯¯\\    //¯¯\\   //¯¯\\       //  //    \\  //\\  //\\   ¯¯¯//¯¯¯
  6.    //    ¯   //    ¯  //    ¯       \\  \\    // //  \\//  \\     \\
  7.   //   ___  //       //        ___  //  //    \\ \\   ¯¯   //     //
  8.   \\   ¯¯\\ \\       \\        ¯¯¯  \\  \\    // //        \\     \\
  9.    \\    //  \\    _  \\    _        _   \\  //  \\        //     //
  10.     \\__//    \\__//   \\__//       //    \\//   //        \\     \\
  11.      ¯¯¯¯      ¯¯¯¯     ¯¯¯¯        ¯      ¯¯    ¯          ¯      ¯
  12.              v1.04ß für ATARI ST von Armin Diedering
  13.  
  14.  
  15.  
  16.  
  17. 1. Das Symptom
  18.  
  19. Beim GNU C++ kam es vor, daß Module eine unverhältnismäßige Länge hatten.
  20. Bei mir z.B. ergab die Compilierung der Zeile "#include<library.h>" ein
  21. Modul mit knapp 3.5kByte.
  22.  
  23. 2. Der Grund
  24.  
  25. Um beim C++ eine dynamische Bindung bei virtuellen Funktionen zu
  26. erreichen, wird eine VMT (Virtual Method Table) verwendet. Die VMT ist
  27. eine Tabelle mit Funktionszeigern. Eine solche Tabelle wird für jede
  28. Classe, die virtuelle Funktionen enthält bzw. geerbt hat, erzeugt.
  29. Solche Tabellen werden nun in jedes Modul statisch abgelegt aber nicht nur
  30. die, die in diesem Modul benötigt werden. Sondern es wird für jede
  31. deklarierte Classe, ob nun die VMT in diesem Modul benötigt wird oder
  32. nicht, abgelegt. Je nach Umfang und Vererbungsgrad können schon mal
  33. mehrere kByte VMT-Leichen in einem Modul schlummern.
  34.  
  35. 3. Die Lösung
  36.  
  37. Die Lösung heißt GCC-!VMT. Dieses Programm klinkt sich zwischen den
  38. Compiler und den Assembler des GNU C++ und filtert unbenutzte Tabellen
  39. aus.
  40.  
  41. 4. Die Installation
  42.  
  43. Benötigt wird ein installiertes GNU C und die 2 Files GCC-CC1P.TTP und
  44. GCC-!VMT.TTP.
  45. Zur Installation sind nur 2 Schritte nötig:
  46.    1. Die Datei "GCC-CC1P.TTP" im Ordner "BIN" vom GNU C in "GCC-CC1P.BIN"
  47.       umbenennen.
  48.    2. Die Dateien "GCC-CC1P.TTP" und "GCC-!VMT.TTP" in den Ordner "BIN"
  49.       vom GNU C kopieren.
  50.                fertig.
  51.  
  52. Rechtliches
  53.  
  54. GCC-!VMT ist Public Domain und darf und soll frei kopiert und weiter
  55. gegeben werden.
  56.  
  57.  
  58. 5. History
  59.  
  60. GCC-!VMT v1.00ß
  61.     das erste
  62.  
  63. GCC-!VMT v1.01ß
  64.     Infotext wird nun nicht mehr immer Angezeigt
  65.  
  66. GCC-!VMT v1.02ß
  67.     Infotext nur bei Compiler-Option -V
  68.  
  69. GCC-!VMT v1.03ß
  70.     Infotext auch bei Compiler-Option -Wall
  71.     hierbei jedoch ohne Versions-Text
  72.  
  73. GCC-!VMT v1.04ß
  74.     Bug beseitigt. wenn asm() befehle Leerzeilen enthielten gingen
  75.     Daten verloren.
  76.  
  77.  
  78. 6. Kontakt
  79.  
  80. Bei Anmerkungen, Kritik oder Lobpreisungen könnt Ihr mir schreiben
  81.         im Maus-Net an Armin Diedering @ L2
  82.  
  83.                                   __  ___  __
  84.                                  / \\/  \\/ \\
  85.                                  \_//\__//\_//
  86.  
  87.         oder per Post
  88.  
  89.         Armin Diedering
  90.         Plötzkauer Ring
  91.  
  92.         06366 Köthen
  93.  
  94.             ____________________________________________________
  95.            /                                                   \\
  96.           /  Jedenfalls viel Spaβ und immer schmalen Code ...  //
  97.           \___________________________________________________//
  98.  
  99.